﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraGrid.Columns;
using BusinessLogicLayer;
using System.Runtime.InteropServices;
using Entities;
using System.Globalization;

namespace QLNhaSach.Modules
{
    public partial class LapHoaDon : UserControl
    {
        DataTable table = new DataTable();
        public LapHoaDon()
        {
            InitializeComponent();
           
            table.Columns.Add("STT");
            table.Columns.Add("Mã Sách");
            table.Columns.Add("Tên Sách");
            table.Columns.Add("Thể Loại");
            table.Columns.Add("Tác Giả");
            table.Columns.Add("Số Lượng Tồn");
            table.Columns.Add("Số Lượng Bán");
            table.Columns.Add("Đơn Giá");

            for (int i = 0; i < 1; i++)
            {
                table.Rows.Add(i + 1, "", "", "", "", "", "", "");
            }

                gridControl1.DataSource = table;
            HoaDonBanSachBO HD = new HoaDonBanSachBO();
            int i_maHoaDon = 0;
            String str_maHoaDon = HD.GetLastID();
            if(str_maHoaDon != null)
                i_maHoaDon = int.Parse(str_maHoaDon);
            txtMaHoaDon.Text = (i_maHoaDon +1).ToString();
            txtNgayLap.Text = DateTime.Now.ToString("dd/MM/yyyy");
           
        }

        private void txtMaKhachHang_EditValueChanged(object sender, EventArgs e)
        {
            string maKhachHang = txtMaKhachHang.Text;
            if (maKhachHang != "")
            {
                int maKH = int.Parse(maKhachHang);
                KhachHang Kh = new KhachHang();
                KhachHangBO KhBO = new KhachHangBO();
                Kh = KhBO.layThongTinKhachHang(maKH);
                txtHoTen.Text = Kh.HoTenKhachHang;
                txtTienNo.Text = Kh.TienNo.ToString();
                txtDiaChi.Text = Kh.DiaChi;
            }
        }

        private void bntThemDong_Click(object sender, EventArgs e)
        {
            int soLuong = table.Rows.Count;
            table.Rows.Add(soLuong+1, "", "", "", "", "", "", "");
        }

        private void bntXoaDong_Click(object sender, EventArgs e)
        {
            int soLuong = table.Rows.Count;
            if(soLuong !=0)
                table.Rows.RemoveAt(soLuong - 1);
        }

        private void gridView1_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
        {
            String s_Column = e.Column.ToString();
            if (s_Column == "Mã Sách")
            {
                int value = int.Parse(e.Value.ToString());
                SachBO sbo = new SachBO();
                Sach s = sbo.GetSachByID(value);
                TheLoaiBO tlbo = new TheLoaiBO();
                TheLoai tl = tlbo.GetTheLoaiByID(s.MaTheLoai);
                TacGiaBO tgbo = new TacGiaBO();
                TacGia tg = tgbo.GetTacGiaByID(s.MaTacGia);
                gridView1.SetRowCellValue(e.RowHandle, "Tên Sách", s.TenSach);
                gridView1.SetRowCellValue(e.RowHandle, "Thể Loại", tl.TenTheLoai);
                gridView1.SetRowCellValue(e.RowHandle, "Tác Giả", tg.TenTacGia);
                gridView1.SetRowCellValue(e.RowHandle, "Số Lượng Tồn", s.SoLuongTon);
                gridView1.SetRowCellValue(e.RowHandle, "Đơn Giá", s.DonGia);
                
            }


            String s_Column1 = e.Column.ToString();
            if (s_Column1 == "Số Lượng Bán")
            {
                ThamSo thamso = new ThamSo();
                ThamSoBO thamsoBO = new ThamSoBO();
                thamso = thamsoBO.layThongTinThamSo();
                int soluong = gridView1.RowCount;
                for (int i = 0; i < soluong; i++)
                {
                    int soLuongBan = int.Parse(gridView1.GetRowCellValue(i, "Số Lượng Bán").ToString());
                    int soLuongTon = int.Parse(gridView1.GetRowCellValue(i, "Số Lượng Tồn").ToString());
                    string  tenSach = (string)gridView1.GetRowCellValue(i, "Tên Sách");
                    
                    if (soLuongTon - soLuongBan <thamso.TonToiThieuSauKhiBan)
                    {
                        MessageBox.Show("Số lượng tồn của " + tenSach + " nếu sau khi bán sẽ nhỏ hơn số lượng qui định là: " + thamso.TonToiThieuSauKhiBan + " Nhập lại số lượng bán...", "Message from Book Store", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        return;
                    }

                }
            }
            
        }

        public void kiemTraSoLuongTonSauKhiBan()
        {
            int soluong = gridView1.RowCount;
            for (int i = 0; i < soluong; i++)
            {
                string demsoluong = gridView1.GetRowCellValue(i, "Số Lượng Bán").ToString();
                if (demsoluong == "")
                {
                    MessageBox.Show("Bạn chưa nhập số lượng!!! Hãy nhập đầy đủ số lượng vào từng đầu sách bán", "Message from Book Store", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }

            }
        }
        void kiemTraDangNhap()
        {
            
        }
        private void bntLapPhieu_Click(object sender, EventArgs e)
        {
            kiemTraSoLuongTonSauKhiBan();
            string maKhachHang = txtMaKhachHang.Text;
            if (maKhachHang == "")
            {
                MessageBox.Show("Bạn chưa nhập tên khách hàng...", "Message from Book Store",MessageBoxButtons.OK,MessageBoxIcon.Warning);
                return;
            }
            string ngay = txtNgayLap.Text;
           


            int i_maKhachHang = int.Parse(maKhachHang);
            int kq =insertHoaDon(i_maKhachHang,ngay);
            if(kq!=0)
                MessageBox.Show("Insert thành công", "Message from Book Store", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            else
                MessageBox.Show("Insert thất bại", "Message from Book Store", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }
        public int  insertHoaDon(int maKhachHang, String ngay)
        {
            HoaDon HD = new HoaDon();
            HD.MaKhachHang = maKhachHang;
            DateTimeFormatInfo dtfi = new DateTimeFormatInfo();
            dtfi.ShortDatePattern = "dd/MM/yyyy";
            dtfi.DateSeparator = "/";
            DateTime objDate = Convert.ToDateTime(ngay, dtfi);
            HD.NgayLapHoaDon = objDate;
            HoaDonBanSachBO HDBO = new HoaDonBanSachBO();
            int kq = 0;
            kq = HDBO.InsertHoaDon(HD);
            return kq;
        }
        
    }
}
